//package com.mezz.bones.framework.web.helper;
//
//import cn.hutool.core.bean.BeanUtil;
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.io.IoUtil;
//import cn.hutool.core.util.PageUtil;
//import cn.hutool.core.util.StrUtil;
//import com.alibaba.fastjson.JSONObject;
//import com.alibaba.fastjson.TypeReference;
//import com.mezz.bones.framework.core.domain.response.PageInfo;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.nio.charset.Charset;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//public class PageHelper {
//
//  /**
//   * 当前记录起始索引
//   */
//  public static final String PAGE_NUM = "page";
//
//  /**
//   * 每页显示记录数
//   */
//  public static final String PAGE_SIZE = "pageSize";
//
//
//  public static <T> PageInfo<T> getPageInfo(Page<T> source) {
//    PageInfo<T> data = new PageInfo<>();
//    data.setPage((int) source.getCurrent());
//    data.setPageSize(((int) source.getSize()));
//    data.setCount((int) source.getTotal());
//    int totalPage = PageUtil.totalPage((int) source.getTotal(), (int) source.getSize());
//    data.setTotalPage(totalPage);
//    List<T> records = source.getRecords();
//    if (CollUtil.isNotEmpty(records)) {
//      data.setList(records);
//    } else {
//      data.setList(new ArrayList<>());
//    }
//    return data;
//  }
//
//  public static <E, T> PageInfo<T> fillPageInfo(Page<E> source, Class<T> clz) {
//    PageInfo<T> data = new PageInfo<>();
//    data.setPage((int) source.getCurrent());
//    data.setPageSize(((int) source.getSize()));
//    data.setCount((int) source.getTotal());
//    int totalPage = PageUtil.totalPage((int) source.getTotal(), (int) source.getSize());
//    data.setTotalPage(totalPage);
//    List<E> records = source.getRecords();
//    if (CollUtil.isNotEmpty(records)) {
//      List<T> list = BeanUtil.copyToList(records, clz);
//      data.setList(list);
//    } else {
//      data.setList(new ArrayList<>());
//    }
//    return data;
//  }
//
//  public static <E,T> PageInfo<T> fillPageInfo(Page<E> source){
//    PageInfo<T> data = new PageInfo<>();
//    data.setPage((int) source.getCurrent());
//    data.setPageSize(((int) source.getSize()));
//    data.setCount((int) source.getTotal());
//    int totalPage = PageUtil.totalPage((int) source.getTotal(), (int) source.getSize());
//    data.setTotalPage(totalPage);
//    data.setList(new ArrayList<>());
//    return data;
//  }
//
//  /**
//   * @author mezz
//   * @date 2022/5/18 10:30
//   * @description 从请求头获取Mybatis Page信息
//   */
//  public static<T> Page<T> getPage() {
//
//    HttpServletRequest request = ServletUtils.getRequest();
//    String body = "";
//    try {
//      body = IoUtil.read(request.getInputStream(), Charset.forName("utf-8"));
//    } catch (IOException e) {
//      throw new RuntimeException(e);
//    }
//
//    Map<String,Object> bodyMap = new HashMap<>();
//
//    if(StrUtil.isNotBlank(body)){
//      bodyMap = JSONObject.parseObject(body,new TypeReference<Map<String, Object>>(){});
//    }
//
//    //获取pageNum信息
//    Integer page = ServletUtils.getParameterToInt(PAGE_NUM);
//    if(page == null){
//      //从body中获取分页信息
//      Object o = bodyMap.get(PAGE_NUM);
//      page = o == null ? BizConstants.PageParam.PAGE : Integer.valueOf(o.toString());
//    }
//
//    //获取pageSize信息
//    Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
//    if(pageSize == null){
//      //从body中获取分页信息
//      Object o = bodyMap.get(PAGE_SIZE);
//      pageSize = o == null ? BizConstants.PageParam.PAGE_SIZE : Integer.valueOf(o.toString());
//    }
//
//    return new Page<>(page, pageSize);
//  }
//}
